Java 基础笔记1:数据类型
数据类型
Java中变量的数据类型分为两大类:
- 基本数据类型:
- 整数类型:byte(占 1 Byte,取值范围 -128
127),short(占 2 Byte,取值范围 -2^152^15-1),int (占 4 Byte 取值范围 -2^312^31-1),Long (占 8 Byte,取值范围 -2^632^63-1。需要使用l
或L
标识符) - 浮点数类型:float(单精度浮点数,占 4 Byte,取值范围 -3.403E38
3.403E38,需要使用1.798E308)f
或F
标识符),double(双精度浮点数,占 8 Byte,取值范围 -1.798E308 - 字符类型:char(占 2 Byte,需要使用单引号)
- 布尔类型:boolean(只有两个固定值
true
或false
)
- 整数类型:byte(占 1 Byte,取值范围 -128
- 引用数据类型
- 数组:
- 字符数组未初始化时,元素值是 int 的 0
- 浮点型默认初始化的数据值为 浮点数 的 0.0
- boolean 数组元素值为 false
- 引用类型的初始化为 null,例如 String 类型数组
- 类
- 接口
- 枚举
- 注解
- 记录
- 数组:
基本数据类型运算
Java 的进行不同类型的基本运算时,会有两种转换可能性:
- 自动类型提升(隐式转换),数值范围小的值与数据范围大的值运算,结果会转换为数据范围大的类型。在某些特殊场景下会转换为其他大数据值范围类型: byte、short 和 char 两两数据类型运算的结果类型是按照 int 类型处理
- 强制类型转换,需要使用类型申明的方式,将数据类型处理,处理方式
类型 变量名 = (类型) 数据值/变量名
。大数据值向小数据范围值类型转换时,可能存在 精度损失 或者 溢出 问题
其他的类型运算需要注意:
- 任何类型数据和 String 进行加和运算都是拼接操作,结果是 String
- String 类型不能直接通过强制类型转换的方式,转换为另一个数据类型
运算符
运算符和其他的便成语言类型,差异的点是 ++
和 --
两个运算符的变量位置会有不同的效果
b = a++
和b = a--
: 表示b
先被赋予变量a
的值,a
在进行加 1 或者减 1 的运算b = ++a
和b = --a
: 表示先对变量a
进行加 1 或者减 1 的运算,再将变量a
的值赋予b
+=
、-=
、*=
、/=
和%=
: 将符号左边的值和右边的值进行运算操作,最后将结果赋值给左边的变量instanceof
:对象类型检查运算符,检查是否为其对象或其子类对象&
和&&
:两者都是逻辑与运算符,在符号前为逻辑真时都会继续执行符号右侧;差异点是当符号前为逻辑假时,前者会继续执行执行符号右侧,后者不会继续执行符号右侧|
和||
:两者都是逻辑或运算符,在符号前为逻辑假时都会继续执行符号右侧;差异点是当符号前为逻辑真时,前者会继续执行执行符号右侧,后者不会继续执行符号右侧- 条件运算符
(条件表达式) ? 表达式1 : 表达式2
:表示的意思是条件表达式成立时执行表达式1否者执行表达式2 ==
: 判断对象是否相同,某些条件下是判断值是否相同,此时可以考虑使用equals
方法——例如 String 比较时,相同的内容但是对象可能是不相同的运算符优先级
运算符有不同的优先级,所谓优先级就是在表达式运算中的运算符顺序
优先级 | 运算符说明 | Java运算符 |
---|---|---|
1 | 括号 | () 、[] 、{} |
2 | 正负号 | + 、- |
3 | 单元运算符 | ++ 、-- 、~ 、! |
4 | 乘法、除法、求余 | * 、/ 、% |
5 | 加法、减法 | + 、- |
6 | 移位运算符 | << 、>> 、>>> |
7 | 关系运算符 | < 、<= 、>= 、> 、instanceof |
8 | 等价运算符 | == 、!= |
9 | 按位与 | & |
10 | 按位异或 | ^ |
11 | 按位或 | ` |
12 | 条件与 | && |
13 | 条件或 | ` |
14 | 三元运算符 | ? : |
15 | 赋值运算符 | = 、+= 、-= 、*= 、/= 、%= |
16 | 位赋值运算符 | &= 、= 、<<= 、>>= 、>>>= |